
export interface Selector1Option{
    oad : String;
    data : DataOpt;
}

export interface Selector2Option{
    oad : String;
    sData : DataOpt;
    eData : DataOpt;
    tData : DataOpt;
}

export interface Selector3Option{
    seqOfSelector2 : Array<Selector2Option>
}

export interface Selector4Option {
    time : String;
    ms : MSOption;
}

export interface Selector5Option {
    time : String;
    ms : MSOption;
}

export interface Selector6Option{
    sTime : String;
    eTime : String;
    ti : TIOption;
    ms : MSOption;
}

export interface Selector7Option{
    sTime : String;
    eTime : String;
    ti : TIOption;
    ms : MSOption;
}

export interface Selector8Option{
    sTime : String;
    eTime : String;
    ti : TIOption;
    ms : MSOption;
}

export interface Selector9Option{
    index : number;
}

export interface Selector10Option{
    index : number;
    ms : MSOption;
}

export interface GetRecordOption{
    oad : String;
    rsd : RSDOption;
    rcsd : RCSDOption;
}

export interface TIOption{
    unit : String;
    interval : String;
}

export interface RegionOption{
    index : number;
    sData : DataOpt;
    eData : DataOpt;
}

export interface MSOption{
    index : number;
    typeGroup? : Array<number>;
    addGroup? : Array<String>;
    serGroup? : Array<number>;
    typeGroupSect? : Array<RegionOption>;
    addGroupSect? : Array<RegionOption>;
    serGroupSect? : Array<RegionOption>;
}

export interface ROADOption{
    oad : String;
    seqOfOad : Array<String>;
}

export interface RCSDOption{
    seqOfCsd : Array<CSDOption>
}

export interface RSDOption {
    index : number;
    selector1? : Selector1Option;
    selector2? : Selector2Option;
    selector3? : Selector3Option;
    selector4? : Selector4Option;
    selector5? : Selector5Option;
    selector6? : Selector6Option;
    selector7? : Selector7Option;
    selector8? : Selector8Option;
    selector9? : Selector9Option;
    selector10? : Selector10Option;
}

export interface CSDOption{
    index : number;
    oad? : String;
    road? : ROADOption
}

export interface SIDOption{
    sid : String;
    attachData : String;
}

export interface SIDMACOption{
    sid : String;
    attachData : String;
    mac : String;
}

export interface RNOption{
    oct : String;
}

export interface RNMACOption{
    oct : String;
    mac : String;
}

export interface TSAOption{
    oct : String;
}

export interface COMMDCBOption{
    bondRate : String;
    checkBits : String;
    dataBits : String;
    stopBits : String;
    flowControl : String;
}

export interface ScalerUnitOption{
    scaler : String;
    unit : String;
}

export interface DataOpt{
    dataIndex : number,
    array? : Array<DataOpt>;
    structure? : Array<DataOpt>;
    bool? : String;
    bit_string? : String;
    double_long? : String;
    double_long_unsigned? : String;
    octet_string? : String;
    visible_string? : String;
    utf8_string? : String;
    integer? : String;
    long? : String;
    unsigned? : String;
    long_unsigned? : String;
    long64? : String;
    long64_unsigned? : String;
    enum? : String;
    float32? : String;
    float64? : String;
    date_time? : String;
    date? : String;
    time? : String;
    date_time_s? : String;
    oi? : String;
    oad? : String;
    road? : ROADOption;
    omd? : String;
    ti? : TIOption;
    tsa? : String;
    mac? : String;
    rn? : RNOption;
    region? : RegionOption;
    scaler_unit? : ScalerUnitOption;
    rsd? : RSDOption;
    csd? : CSDOption;
    ms? : MSOption;
    sid? : SIDOption;
    sid_mac? : SIDMACOption;
    comdcb? : COMMDCBOption;
    rcsd? : RCSDOption;
}
